/*
 * GameState.h
 *
 *  Created on: Jan 4, 2009
 *      Author: Michael
 */

#ifndef GAMESTATE_H_
#define GAMESTATE_H_

#include "Prismatic.h"
class Prismatic;

class GameState
{
private:
	bool paused;

public:
	GameState():paused(false) {}

	//functions to handle initialization and clean up
	virtual void Init() = 0;
	virtual void CleanUp() = 0;

	//functions to handle pausing and resuming a state
	virtual void Pause() = 0;
	virtual void Resume() = 0;
	bool IsPaused() { return paused; }

	/*functions to handle main processes of states
	 * They will take a pointer to the main game
	 * so that they have easy access to game information
	 */
	virtual void HandleInput(Prismatic* game) = 0;
	virtual void Render(Prismatic* game) = 0;
	virtual void Update(Prismatic* game) = 0;

};
#endif /* GAMESTATE_H_ */
